package com.anjufang.utils;

import com.anjufang.entity.AdminUser;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.session.Session;

/**
 * Shiro管理下的Token工具类
 * @author wcy
 *
 */
public class TokenManager {
	
	
	/**
	 * 获取当前登录的用户AdminUser对象
	 * @return
	 */
	public static AdminUser getToken(){
		AdminUser token = (AdminUser)SecurityUtils.getSubject().getPrincipal();
		return token ;
	}
	

	/**
	 * 获取当前用户的Session
	 * @return
	 */
	public static Session getSession(){
		return SecurityUtils.getSubject().getSession();
	}
	
	
	
	/**
	 * 获取当前用户NAME
	 * @return
	 */
	public static String getName(){
		return getToken().getUserName();
	}
	
	/**
	 * 获取当前用户登录账号
	 * @return
	 */
	public static String getLoginId(){
		return getToken().getUserName();
	}
	
	/**
	 * 获取当前用户ID
	 * @return
	 */
	public static Long getUserId(){
		return getToken()==null?null:getToken().getId();
	}
	/**
	 * 把值放入到当前登录用户的Session里
	 * @param key
	 * @param value
	 */
	public static void setVal2Session(Object key ,Object value){
		getSession().setAttribute(key, value);
	}
	/**
	 * 从当前登录用户的Session里取值
	 * @param key
	 * @return
	 */
	public static Object getVal2Session(Object key){
		return getSession().getAttribute(key);
	}
	
	/**
	 * 登录
	 * @param user
	 * @param rememberMe
	 * @return
	 */
	public static AdminUser login(AdminUser user,Boolean rememberMe){
		UsernamePasswordToken token = new UsernamePasswordToken(user.getUserName(), user.getPassword());
		token.setRememberMe(rememberMe);
		SecurityUtils.getSubject().login(token);
		return getToken();
	}


	/**
	 * 判断是否登录
	 * @return
	 */
	public static boolean isLogin() {
		return null != SecurityUtils.getSubject().getPrincipal();
	}
	/**
	 * 退出登录
	 */
	public static void logout() {
		SecurityUtils.getSubject().logout();
	}
	
}
